﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 战棋模拟器
{
    class 红色雏龙:Minion
    {//经过测试，在很多小红龙对喷的时候，龙的数量并不会变化（即使一些龙已经死亡）这个事实说明：
        //dragonCount应当在初始化阶段进行计算，而不是每次触发前计算（尽管在大多数时候两者相同）

        public int dragonCount = 0;
        public 红色雏龙():base()
        {
            Health = 2;
            Race = race.dragon;
            startEffect = 1;
            //这里不使用damage自动*2来创造金色，而使用基类start函数的重复调用来实现
        }


        public override void Initialize()
        {
            foreach (Minion m in pool.places)
            {
                if (m == null)
                    break;
                if (m.Race == race.dragon || m.Race == race.all)
                    dragonCount++;
            }
            base.Initialize();
        }


        public override void Start()
        {            
            if (pool.next.TrueCount()<=0)
                return;
            Minion n = pool.next.RandomMinion();
            if (pool.board.Debug)
            {
                Console.WriteLine("{0}方{1}对{2}号位的{3}造成了{4}点伤害",
                    pool.direction?"上":"下",
                    Name,
                    n.Place,
                    n.Name,
                    dragonCount);
            }
            n.Getdamaged(dragonCount);
            if (n.Health<=0)
                pool.OnDragonKill();
            if(pool.board.Debug)
            {
                pool.board.Showboard();
            }
        }


        public override Minion NewOne()
        {
            return new 红色雏龙();
        }
    }


    class 红色雏龙_金色 : 红色雏龙
    {
        public 红色雏龙_金色() : base()
        {
            Attack *= 2;
            Health *= 2;
        }



        public override Minion NewOne()
        {
            return new 红色雏龙_金色();
        }



        public override void Start()
        {
            base.Start();
            base.Start();
        }

    }
}
